package com.jie.creator.singleton.demo09;

import java.lang.reflect.Constructor;

/**
 * @description:测试使用反射破坏单例模式
 * @author: jie 
 * @time: 2022/1/29 19:26
 */
public class Test {
    public static void main(String[] args) throws Exception{
        //1、获取Singleton的字节码对象
        Class clazz = Singleton.class;
        //2、获取无参构造方法对象
        Constructor cons = clazz.getDeclaredConstructor();
        //3、取消访问检查
        cons.setAccessible(true);
        //4、创建Singleton对象
        Singleton s1 = (Singleton) cons.newInstance();
        Singleton s2 = (Singleton) cons.newInstance();
        //判断，如果返回的是true，说明并没有破坏单例模式，如果是false,说明破坏了单例模式
        System.out.println(s1==s2);
    }
}
